package com.xmsx.back.service.admin;

import com.xmsx.back.mapper.admin.UserMapper;

import com.xmsx.back.pojo.User;
import com.xmsx.back.results.Result;
import com.xmsx.back.utils.JWTUtil;
import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {
    @Autowired
    UserMapper userMapper;

    /**
     * 根据用户名获得用户信息
     *
     * @param username
     * @return
     */
    public User getByUserName(String username) {

        return userMapper.getByUsername(username);
    }

    /**
     * 添加用户
     *
     * @param user
     */
    public void setUser(User user) {
        userMapper.setUser(user);
    }

    /**
     * 登录
     *
     * @param username
     * @param formPass
     * @return
     */
    public Result<String> login(String username, String formPass) {


        //判断用户是否存在
        User user = getByUserName(username);
        if (user == null) {
            //用户为空时，报错
            return Result.error("用户名不存在");
        }

        //如果查询存在该用户名的用户，则验证密码
        if (!formPass.equals(user.getPassword())) {
            //密码错误报错
            return Result.error("密码错误");
        }

        //密码验证成功生成token（根据用户名和密码生成token）
        String token = JWTUtil.sign(user.getUsername());
        if (token != null) {
            return Result.success(token);
        }
        return Result.error("登录失败");

    }

    /**
     * 删除用户
     *
     * @param username
     */
    public void dropUserByUsername(String username) {
        userMapper.deleteUser(username);
    }

    /**
     * 获取所有用户
     *
     * @return
     */
    public List<User> getAllUsers() {

        return userMapper.getAllUsers();
    }

    /**
     * 修改管理员密码
     *
     * @param username
     * @param formPass
     * @param newformPass
     * @return
     */
    public Result<String> alter(String username, String formPass, String newformPass) {

        //判断用户是否存在
        User user = getByUserName(username);
        if (user == null) {
            //用户为空时，报错
            return Result.error("用户名不存在");
        }

        //如果查询存在该用户名的用户，则验证密码
        if (!formPass.equals(user.getPassword())) {
            //密码错误报错
            return Result.error("密码错误");
        }

        user.setPassword(newformPass);

        //密码验证成功，就设置新密码
        userMapper.updateUser(user);
        return Result.success("修改成功");
    }
}